#ifndef _RENZO_ERROR_REPORT_
#define _RENZO_ERROR_REPORT_

#define _RenzoExport __declspec(dllexport)

namespace Renzo {
	// error messages
	#define ERROR_FILE_NOT_FOUND	"File %s not found."
	#define ERROR_MEMORY_ALLOC		"Memory allocation error."
	#define ERROR_FILE_READ			"File read error."

	// exit code
	#define EXIT_MEMORY_ALLOC	1
	#define EXIT_FILE_READ		2

	extern "C" {
	  _RenzoExport void  rzInfo(const char*, ...);
	  _RenzoExport void  rzWarning(const char*, ...);
	  _RenzoExport void  rzError(const char*, ...);
	  _RenzoExport void  rzSevere(const char*, ...);

		/* rzAssert */
		#ifdef NDEBUG
		#define rzAssert(expr) ((void)0)
		#else
		#define rzAssert(expr) \
		((expr) ? (void)0 : rzSevere("Assertion " #expr " failed in %s, line %d", __FILE__, __LINE__))
		#endif	  
	}
}

#endif